package com.zjsru.oneDay202204;

import java.util.Arrays;

/**
 * @Author: likew
 * @Date: 2022/4/24
 *
 * 二进制间距
 * 输入：n = 22
 * 输出：2
 * 解释：22 的二进制是 "10110" 。
 * 在 22 的二进制表示中，有三个 1，组成两对相邻的 1 。
 * 第一对相邻的 1 中，两个 1 之间的距离为 2 。
 * 第二对相邻的 1 中，两个 1 之间的距离为 1 。
 * 答案取两个距离之中最大的，也就是 2 。
 *
 */
public class binaryGap {
    public int binaryGap(int n) {
        int res = 0;
        String s = Integer.toBinaryString(n);
        int low = 0,high = 0,len = s.length();
        for (int i = 0; i < len; i++) {
            if(s.charAt(i) == '1' && high < len){
                res = Math.max(res,high - low);
                low = high;
            }
            high++;
        }
        return res;
    }
    
    /**
     * no.2
     * */
//    public int binaryGap(int n) {
//        int res = 0, num = 0;
//        String s = Integer.toBinaryString(n);
//        int low = 0,high = 0,len = s.length();
//            for (int i = 0; i < len; i++) {
//            if(s.charAt(i) == '1' && high < len){
//                res = Math.max(res,high - low);
//                low = high;
//            }
//            high++;
//        }
//            return res;
//    }
    public static void main(String[] args) {
        binaryGap binaryGap = new binaryGap();
        int n = 22;
        System.out.println(binaryGap.binaryGap(n));
    }
}
